#include "datos.h"

using namespace std;


Datos::Datos()
{
}

/** La funcion setDatosSee recibe un string con la informacion despues del parseo y distribuye los valores
  * en la clase see. Siempre que reciba un valor recibe tambien la instruccion a la que pertenece para encontrarla
  * en el map*/
void Datos::setDatosSee(std::string instruccion, vector<string> valor)
{
    double j;

    string cadena; //Variable auxiliar que facilita la conversión de string a double
    if (valor.size()>0){
        for (int i=0; i<valor.size();i++)
        {
           cadena=valor.at(i);
           j=atof(cadena.c_str());
            switch (i)
            {
            case 0:
                Seeinst[instruccion].setDist(j);
                break;
            case 1:
                Seeinst[instruccion].setDir (j);
                break;
            case 2:
                Seeinst[instruccion].setDistchng (j);
                break;
            case 3:
                Seeinst[instruccion].setDirchng (j);
                break;
            case 4:
                Seeinst[instruccion].setBodydir (j);
                break;
            case 5:
                Seeinst[instruccion].setHeaddir (j);
                break;
            }
        }
    }
}

void Datos::setDatosSense(string instruccion,vector<string> valor)
{

    if (instruccion.compare("view_mode")==0)  //
    {
        Senseinst[instruccion].setQuality (valor[0]);

        Senseinst[instruccion].setWidth (valor[1]);
    }
    else
        Senseinst[instruccion].setValue(valor);

}

void Datos::setDatosHear(string who, vector<string> data)
{

    Hearinst[who].setdata(data);
}

void Datos::setValor (string dato)
{
    valores.push_back(dato);
}

void Datos::setInit(vector<string> initData)
{
    numero=atoi(initData.at(0).c_str());
    if(initData.at(1)!="l" && initData.at(1)!="r")
        side="desconocido";
    else
        side=initData.at(1);
}

int Datos::getNumero()
{
    return numero;
}

string Datos::getSide()
{
    return side;
}
